<?php
/**
 * Pilote
 * 
 * @author Kai
 * @version 
 */
require_once 'Zend/Db/Table/Abstract.php';
class Default_Models_DbTable_Pilote extends Zend_Db_Table_Abstract
{
	// Fait le lien avec la base de donn�es
    protected $_name = 'pilote';

    
    ///////////////////////////
    //
    //
    //	Fonctions de listage
    //
    //
    /////////////////////////////
    
    
	public function listerPilote() {
		return $this->fetchAll(null);	
	}
	
	public function searchPiloteByLettre($lettre) {
		$select = $this->select();
		$select->setIntegrityCheck(false)
		 ->distinct()
	     ->from(array('pi' => 'pilote'), '*')
         ->join(array('ph' => 'photo'), 'pi.pilnum = ph.pilnum' )
         ->where("pilnom LIKE '".$lettre."%'")
         ->group('pi.pilnum') 
         ->group('PILNOM');
  		return $result = $this->fetchAll($select);
	}
	
	public function searchPiloteById($id) {
		$select = $this->select();
		$select->setIntegrityCheck(false)
		 ->distinct()
	     ->from(array('pi' => 'pilote'), array('PILNUM', 'PILNOM','PILPRENOM', 'PILPOINTS', 'PILDATENAIS', 'PILPOIDS' ,'PILTAILLE','PILTEXTE' ))
         ->joinLeft(array('pa' => 'pays'), 'pi.paynum=pa.paynum', array('PAYNUM', 'PAYNAT') )
         ->joinLeft(array('ec' => 'ecurie'), 'pi.ecunum = ec.ecunum', 'ECUNOM' )
         ->join(array('ph' => 'photo'), 'pi.pilnum=ph.pilnum',  array('PHOADRESSE', 'PHOCOMMENTAIRE') )
         ->where("pi.PILNUM = '".$id."'")
         ->group('pi.pilnum') 
         ->group('PILNOM');
  		return $result = $this->fetchAll($select);
	}
	
	public function searchSponsorsPiloteById($id) {
		$select = $this->select();
		$select->setIntegrityCheck(false)
		 ->distinct()
	     ->from(array('pi' => 'pilote'), array())
         ->join(array('sp1' => 'sponsorise'), 'pi.pilnum=sp1.pilnum')
         ->join(array('sp2' => 'sponsor'), 'sp1.sponum=sp2.sponum')
        ->where("pi.PILNUM = '".$id."'");
  		$result = $this->fetchAll($select);
  		if ($result->count() <= 0)
  			return $result = 0;
  		else return $result;
			
	}
	
	public function searchImagesPiloteById($id) {
		$req = "SELECT DISTINCT * FROM Pilote pi
				INNER JOIN photo ph ON pi.pilnum=ph.pilnum
				WHERE pi.PILNUM = $id";
		
		$select = $this->select();
		$select->setIntegrityCheck(false)
		 ->distinct()
	     ->from(array('pi' => 'pilote'))
         ->join(array('ph' => 'photo'), 'pi.pilnum=ph.pilnum', array('PHOADRESSE', 'PHOCOMMENTAIRE') )
        ->where("pi.PILNUM = '".$id."'");
        return $result = $this->fetchAll($select);
	}
	
	public function listPiloteByLettre() {
		$select = $this->select();
		$select
			   ->from('pilote', 'substr(pilnom,1,1) AS lettre')
			   ->distinct()
			   ->order('lettre ASC');
			   
		return $result = $this->fetchAll($select);
	}

	
	// Permet d'ins�rer un pilote �partir d'un tableau de valeurs
	public function insertPilote($values) {
		$result = $this->insert($values);
		if(!$result) {
			throw new Exception ("Erreur lors de l'insertion du pilote");
		}
	}
	
	// Mise � jour du livre d'or � partir de l'identifiant et d'un tableau de valeurs
	public function updatePilote($id, $values) {
		$result = $this->update($values, 'PILNUM='.$id);
		if(!$result) {
			throw new Exception ("Erreur lors de la modification du pilote");
		}
	}
	
	// Supprime un pilote � partir de son id
	public function deletePilote($id) {
		$result = $this->delete('PILNUM='.$id);
		if(!$result) {
			throw new Exception ("Erreur lors de la suppression du pilote");
		}
	}
}